【STM32 】通过ST 您所在的位置:网站首页 stm32 flash存储机制方法 【STM32 】通过ST

【STM32 】通过ST

2023-09-22 12:59| 来源: 网络整理| 查看: 265

目录

前言

一、例程参考及讲解

1.1 Loader_Src.c文件

1.2 Dev_Inf.c文件

二、程序修改

三、实测

参考

前言

在单片机的实际应用中,通常会搭载一些片外FLASH芯片,用于存储系统的一些配置文件,比如说图片、字体、配置文件等。在出厂设置时,如何通过离线的方式将这些配置文件烧录至片外FLASH中成为关键。当然,在大批量生产中,可以先通过FLASH离线烧录工具将所需的文件烧写至FLASH,再进行贴片,但如何在小批量生产中实现片外FLASH的离线烧录呢?且听本文细细道来。

本文主要采用的是片外片外FLASH型号为W25Q64(SPI通信),MCU为STM32F103VCT6。安装好STlink的下载工具 STM32 ST-LINK utility,本文安装目录为C:\Program Files (x86)\STMicroelectronics。

一、例程参考及讲解

打开STM32 ST-LINK utility工具,点击External Loader,找到SPI FLASH的例程M25P64_STM3210E-EVAL。此后参考这个例程进行修改。Add External Loader 会罗列出C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ExternalLoader目录下所有的stldr文件。

进入C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility\ExternalLoader目录下,找到M25P64_STM3210E-EVAL例程。

打开工程文件,包含Loader_Src.c和Dev_Inf.c文件。

1.1 Loader_Src.c文件

基于特定IP为内存开发外部加载程序需要下述函数。请注意,必须在外部加载程序中定义以下函数:

Init函数:Init函数定义用于连接外部存储器的GPIO,初始化所用IP的时钟,并定义使用的GPIO。

Write函数:Write函数对使用RAM范围内的地址定义的缓冲区进行编程。

SectorErase函数(Flash存储器):SectorErase函数擦除由起始地址和结束地址定义的存储器扇区。该函数在SRAM存储器中不能使用。函数原型为int SectorErase (uint32_t StartAddress, uint32_t EndAddress)其中,“StartAddress” = 要擦除的第一个扇区的地址,“EndAddress” = 要擦除的最后一个扇区的地址。

下面是可以定义的其他函数:

Read函数:该函数用来读取指定范围的存储器,并将读取的数据返回到RAM里的缓冲区中,函数原型为int Read (uint32_t Address, uint32_t Size, uint16_t* buffer),其中,“Address” = 读取操作的起始地址,“Size”= 读取操作的大小,“buffer”= 指向 读取后的数据的指针。对于QSPI/OSPI(Quad-SPI/Octo-SPI)存储器,可以在Init函数中定义存储器映射模式;这种情况下,Read函数无用。

Verify函数:选择“verify while programming”模式时会调用该函数。该函数检查编程的存储器是否与RAM中定义的缓冲区保持一致。它返回一个uint64,定义如下:checksum



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有